package pe.gob.onpe.ejb;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import pe.gob.onpe.ejb.id.ProcesoelectoraltipoeleccionId;


/**
 * Procesoelectoraltipoeleccion entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "PROCESOELECTORALTIPOELECCION", schema = "SVENP", uniqueConstraints = {})
public class Procesoelectoraltipoeleccion implements java.io.Serializable {

	// Fields
	private static final long serialVersionUID = -2141103007284288985L;
	
	private ProcesoelectoraltipoeleccionId		id;
	private ProcesoElectoral					procesoElectoral;
	private TipoEleccion						tipoEleccion;
	private Long								numeroorden;
	private Set<ParametroCedulaTipoEleccion>	parametroCedulaTipoEleccions	= new HashSet<ParametroCedulaTipoEleccion>(0);
	private Set<ParticipacionListaCandidatos>	participacionListaCandidatoses	= new HashSet<ParticipacionListaCandidatos>(0);

	// Constructors

	/** default constructor */
	public Procesoelectoraltipoeleccion() {
	}

	/** minimal constructor */
	public Procesoelectoraltipoeleccion(ProcesoelectoraltipoeleccionId id,
			ProcesoElectoral procesoElectoral, TipoEleccion tipoEleccion) {
		this.id = id;
		this.procesoElectoral = procesoElectoral;
		this.tipoEleccion = tipoEleccion;
	}

	/** full constructor */
	public Procesoelectoraltipoeleccion(ProcesoelectoraltipoeleccionId id,
			ProcesoElectoral procesoElectoral, TipoEleccion tipoEleccion,
			Long numeroorden,
			Set<ParametroCedulaTipoEleccion> parametroCedulaTipoEleccions,
			Set<ParticipacionListaCandidatos> participacionListaCandidatoses) {
		this.id = id;
		this.procesoElectoral = procesoElectoral;
		this.tipoEleccion = tipoEleccion;
		this.numeroorden = numeroorden;
		this.parametroCedulaTipoEleccions = parametroCedulaTipoEleccions;
		this.participacionListaCandidatoses = participacionListaCandidatoses;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "tipoEleccionId", column = @Column(name = "TIPO_ELECCION_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)),
			@AttributeOverride(name = "procesoElectoralId", column = @Column(name = "PROCESO_ELECTORAL_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)) })
	public ProcesoelectoraltipoeleccionId getId() {
		return this.id;
	}

	public void setId(ProcesoelectoraltipoeleccionId id) {
		this.id = id;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "PROCESO_ELECTORAL_ID", unique = false, nullable = false, insertable = false, updatable = false)
	public ProcesoElectoral getProcesoElectoral() {
		return this.procesoElectoral;
	}

	public void setProcesoElectoral(ProcesoElectoral procesoElectoral) {
		this.procesoElectoral = procesoElectoral;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPO_ELECCION_ID", unique = false, nullable = false, insertable = false, updatable = false)
	public TipoEleccion getTipoEleccion() {
		return this.tipoEleccion;
	}

	public void setTipoEleccion(TipoEleccion tipoEleccion) {
		this.tipoEleccion = tipoEleccion;
	}

	@Column(name = "NUMEROORDEN", unique = false, nullable = true, insertable = true, updatable = true, precision = 5, scale = 0)
	public Long getNumeroorden() {
		return this.numeroorden;
	}

	public void setNumeroorden(Long numeroorden) {
		this.numeroorden = numeroorden;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "procesoelectoraltipoeleccion")
	public Set<ParametroCedulaTipoEleccion> getParametroCedulaTipoEleccions() {
		return this.parametroCedulaTipoEleccions;
	}

	public void setParametroCedulaTipoEleccions(
			Set<ParametroCedulaTipoEleccion> parametroCedulaTipoEleccions) {
		this.parametroCedulaTipoEleccions = parametroCedulaTipoEleccions;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "procesoelectoraltipoeleccion")
	public Set<ParticipacionListaCandidatos> getParticipacionListaCandidatoses() {
		return this.participacionListaCandidatoses;
	}

	public void setParticipacionListaCandidatoses(
			Set<ParticipacionListaCandidatos> participacionListaCandidatoses) {
		this.participacionListaCandidatoses = participacionListaCandidatoses;
	}

}